﻿#include "handldatas.h"
#include <QCoreApplication>
#include <QProcess>
#include <QDebug>
#include <QFile>


HandlDatas  * HandlDatas::m_handlDatas = NULL;
HandlDatas::HandlDatas(QObject *parent) : QObject(parent)
  , m_timer(NULL)
  , m_exeTimer(NULL)
  , m_runExes("")
{
    m_exePaths = QCoreApplication::applicationDirPath();
    m_exePaths+="/";
    m_runExes = "/root/linuxrun/";
    m_timer = new QTimer(this);
    connect(m_timer,SIGNAL( timeout() ) ,this,SLOT( onTimeout() ) );

    m_exeTimer= new QTimer(this);
    connect(m_exeTimer,SIGNAL( timeout() ) ,this,SLOT( onExeTimeout() ) );

}

HandlDatas::~HandlDatas()
{
    if(m_timer == NULL){
        disconnect(m_timer,SIGNAL( timeout() ) ,this,SLOT( onTimeout() ) );
        delete  m_timer;
        m_timer = NULL;
    }

}

HandlDatas *HandlDatas::gestance()
{
    if(m_handlDatas == NULL){

        m_handlDatas = new HandlDatas();
    }

    return  m_handlDatas;
}

void HandlDatas::setRunPaths(QString pathsa, QString pathsb)
{
    m_runPaths = pathsa;
    m_runZipPaths = pathsb;
    if(m_timer != NULL){
        m_timer->start(500);
    }
}

void HandlDatas::onTimeout()
{

    qDebug()<<__func__<<__LINE__<<"exePaths=="<<m_exePaths;


    QProcess process2;
    QString cmds2 = QString("killall");

    process2.setProgram(cmds2);
    QStringList list2;

    list2  <<"mointors" ;
    qDebug()<<__func__<<__LINE__<<"cmdsa=="<<cmds2;
    qDebug()<<__func__<<__LINE__<<"lista=="<<list2;

    process2.setArguments(list2);

    qDebug()<<__func__<<__LINE__;
    process2.start();
    qDebug()<<__func__<<__LINE__;
    process2.waitForFinished();
    QString stdoutStrings2 = process2.readAll();
    process2.close();
    qDebug()<<__func__<<__LINE__<<stdoutStrings2;





    QProcess process1;
    QString cmds1 = QString("killall");

    process1.setProgram(cmds1);
    QStringList list1;

    list1  <<"luckcontrol" ;
    qDebug()<<__func__<<__LINE__<<"cmdsa=="<<cmds1;
    qDebug()<<__func__<<__LINE__<<"lista=="<<list1;

    process1.setArguments(list1);

    qDebug()<<__func__<<__LINE__;
    process1.start();
    qDebug()<<__func__<<__LINE__;
    process1.waitForFinished();
    QString stdoutStrings1 = process1.readAll();
    process1.close();
    qDebug()<<__func__<<__LINE__<<stdoutStrings1;



    QString cmdsc = QString("chmod");
    QStringList listc;
    QString infors= m_runExes;

    listc <<"-R" <<"0777" <<infors ;
    qDebug()<<__func__<<__LINE__<<"cmdsc=="<<cmdsc;
    qDebug()<<__func__<<__LINE__<<"listc=="<<listc;
    QProcess processbs;
    processbs.setProgram(cmdsc);
    processbs.setArguments(listc);
    //processb.start(cmdsc,listc);
    qDebug()<<__func__<<__LINE__;
    processbs.start();
    qDebug()<<__func__<<__LINE__;
    processbs.waitForFinished();
    QString stdoutString2s = processbs.readAll();
    processbs.close();
    qDebug()<<__func__<<__LINE__<<stdoutString2s;



    QProcess processa;
    QString cmdsa = QString("unzip");

    processa.setProgram(cmdsa);
    QStringList lista;

    lista  <<"-o" <<m_runZipPaths  <<"-d"<< m_runPaths;
    qDebug()<<__func__<<__LINE__<<"cmdsa=="<<cmdsa;
    qDebug()<<__func__<<__LINE__<<"lista=="<<lista;

    processa.setArguments(lista);
    // processa.start(cmdsa,lista);
    qDebug()<<__func__<<__LINE__;
    processa.start();
    qDebug()<<__func__<<__LINE__;
    processa.waitForFinished();
    QString stdoutString1 = processa.readAll();
    processa.close();
    qDebug()<<__func__<<__LINE__<<stdoutString1;





    listc <<"-R" <<"0777" <<infors ;
    qDebug()<<__func__<<__LINE__<<"cmdsc=="<<cmdsc;
    qDebug()<<__func__<<__LINE__<<"listc=="<<listc;
    QProcess processb;
    processb.setProgram(cmdsc);
    processb.setArguments(listc);
    //processb.start(cmdsc,listc);
    qDebug()<<__func__<<__LINE__;
    processb.start();
    qDebug()<<__func__<<__LINE__;
    processb.waitForFinished();
    QString stdoutString2 = processb.readAll();
    processb.close();
    qDebug()<<__func__<<__LINE__<<stdoutString2;


    /*
    QString luckcontrolPaths=m_exePaths+"/luckcontrol";
    qDebug()<<__func__<<__LINE__<<"luckcontrolPaths=="<<luckcontrolPaths;

    QString cmdsb = "nohup";//luckcontrolPaths ;//QString("bash");
    QStringList listb;
    listb<<luckcontrolPaths<<">"<< "/dev/null"<< "2"<<">"<<"&1"<<"&";
    qDebug()<<__func__<<__LINE__<<"listb=="<<listb;

    QProcess::startDetached(cmdsb,listb);
    */
    QString tags =  m_exePaths+"/tag.txt";
    qDebug()<<__func__<<__LINE__<<"tags=="<<tags;

    QFile::remove(tags);


    /*
    QString mointors=m_exePaths+"/mointors";
    qDebug()<<__func__<<__LINE__<<"mointors=="<<mointors;

    QString cmdsd = "nohup";// mointors ;//QString("bash");
    QStringList listd;
    listb<<mointors<<">"<< "/dev/null"<< "2"<<">"<<"&1"<<"&";
    qDebug()<<__func__<<__LINE__<<"listd=="<<listd;

    QProcess::startDetached(cmdsd,listb);
*/
    QString cmdsf =m_exePaths+"runfiles.sh";
    QStringList listf;

    QProcess::startDetached(cmdsf);
    qDebug()<<__func__<<__LINE__;
    //    QProcess processf;
    //    processf.setProgram(cmdsf);
    //    processf.setArguments(listf);

    //    qDebug()<<__func__<<__LINE__;
    //    processf.start();
    //    qDebug()<<__func__<<__LINE__;
    //    processf.waitForFinished();
    //    QString stdoutString3 = processf.readAll();
    //    processf.close();
    //    qDebug()<<__func__<<__LINE__<<stdoutString3;

    if(m_exeTimer != NULL){
        m_exeTimer->start(500);
    }

}

void HandlDatas::onExeTimeout()
{
    if(m_exeTimer != NULL){
        m_exeTimer->stop();
    }
    QCoreApplication::exit(0);
}
